<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			/**
			 * 强制类型转换
			 * -将一个数据类型转换为其他数据类型
			 * 主要指 转换为Sring Number Boolean
			 * 转换为其他类型没有意义
			 */
			
			/**
			 将其他类型的数据转换为String
				方式1：
					-调用被转换数据类型的toString()方法
		
			 */

			var num=123;
			//调用num的toString()方法
			//		调用xxx的yyy()方法 就是 xxx.yyy()
			//		但是该方法并不会影响到原变量，它会将转换的结果返回 
			//		但是可以赋值给原来的变量
			//		注意 null和undefined类型没有toString()方法 如果对他们进行修改 就会报错 
			
			var b=num.toString();
			var num=num.toString();
			// console.log(typeof num);
			// console.log(typeof b);
			
			/**
			 * 方法二
			 * 		调用 String()函数，并将被转换的数据传递给函数
			 * 		同样 函数也不修改原变量 需要赋值给原变量
			 * 		String()函数可以把null类型和undefined类型进行转换
			 * 
			 * 	实际上
			 * 			对于Number 和 Boolean 函数实际就是调用的 toString()函数
			 * 			而对于 null和undef 实际上是直接 把 null 改成了 "null"
			 * 										  把 undefin 改成了"undefined"
			 */
				/**
				 * 其实转换为字符串类型还有方法3 即：与字符串相加激素hi字符串
				 */
				
				
				/**
				 * 将其他数据类型转换位 Number类型
				 * 转换 方式1：
				 * 			使用 Number()函数 用法和 String()一样
				 * 				字符串-->数字
				 * 					1. 纯数字 字符串--->直接转换为数字
				 * 					2. 如果字符串中有非数字内容 --->则转换为 NaN
				 * 					3. 如果字符串中是空字符串或者全是空格  那么转换为 0
				 *				布尔-->数字  
				 * 						true---1
				 * 						false--0
				 * 				Null--->数字  ---0
				 * 				undefin --->数字  ----NaN
				 * 转换方式 2 ：专门用来对付字符串 （有非法的时候）
				 * 				
				 * 			-parseInt()
				 * 			-parseFloat()
				 *  方式3： 利用 - * / 这三种运算 
				 * 			如 '12'-0---->12
				 * 				'123'-'120'--->3
				 */
				//方式一
				var a=123;
				a=String(a);
				// console.log(typeof a);
				
				//方式二
				a="123px";
				//调用  parseInt()把 a转换为Number
				a=parseInt(a);
				//发现他会返回123 更智能 直接把数字返回
				// parseInt()可以将一个字符串中的有效的整数内容取出来
				// 然后转换为Number 只读整数 不会读其他类型 
				//        如果是 123k13那么返回123  a123---NaN
								// 123.567 ---返回123
				// 所以 遇到不是整数的就不在读取了直接返回
				
				/*
				parseFloat()的作用 与 parseInt()类似 只是可以读取有效的小数
				但是 123.456.789px---->123.456 因为 6后面就不是有效的小数了 哪里有两个小数点？
				*/
			   a="123.456px";
			   a=parseFloat(a);
			   /*
			   如果对非String使用parseInt()和parseFloat()
			   他会将其先转为字符串类型 然后再操作*/
			   a=true;
			   a=parseInt("true"); 
				/*  
				console.log(typeof a);    //转换为了number型
				console.log(a);          // 但结果是 NaN 因为识别不出来
				*/
			a=123.456;
			a=parseInt(a);
			/* 
			结果为 123
			其实 parseint函数先把123.456 转换为 "123.456" 然后在进行输出
			*/
		   var a ="123";
		   console.log(Number(a));
		</script>
	</head>
	<body>
	</body>
</html>
